/*
 * @Author: 晟松
 * @Date: 2021-12-07 23:38:23
 * @LastEditors: 晟松
 * @LastEditTime: 2022-02-13 21:28:26
 * @FilePath: \mini-vue3d:\Code\node\koa2\volunteer-service\src\main\model\GroupVol.js
 * @Description: 大型志愿服务模型
 */
import Sequelize from "sequelize";
import { isValidateEnum } from "@main/util/ValidateUtil";
import { ParamError } from "../common/CommonError";

export const modelName = "groupVol";

const DataTypes = Sequelize.DataTypes;

export const attributes = {
    // 服务状态
    state: {
        type: DataTypes.INTEGER,
        allowNull: false,
        validate: {
            check(val) {
                if (!isValidateEnum(val, "state")) {
                    throw new ParamError(`state: ${val}值错误`);
                }
            },
        },
    },
    time: {
        type: DataTypes.DATE,
        allowNull: false,
    },
    duration: {
        type: DataTypes.FLOAT,
    },
    timeIntegral: DataTypes.INTEGER, // 时间积分数
    place: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    title: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    event: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    peopleNum: DataTypes.INTEGER, // 大致人数
    realPeopleNum: {
        type: DataTypes.INTEGER,
        defaultValue: 0,// 实际人数，默认为0
    }, // 实际参与人数
    demand: DataTypes.STRING, // 要求
    img: DataTypes.STRING,
    feedback: DataTypes.STRING,
    evaluation: DataTypes.STRING, // 评价
    evaluationScore: DataTypes.INTEGER,
    // 发起者，居委会的id
    initiatorId: {
        type: DataTypes.INTEGER,
    },
    // 接受者，辅导员的id
    recipientId: {
        type: DataTypes.INTEGER,
    },
    // 是否公开
    isPublic: {
        type: DataTypes.BOOLEAN,
    },
    recipientTime: {
        type: DataTypes.DATE,
    },
    // 这两个是关于区块链的一个记录，主要是记录其中的交易hash和块hash，通过这两个hash就可从区块链中获取到对应的信息
    transactionHash: DataTypes.STRING,
    blockHash: DataTypes.STRING,
};

export const options = {
    // tableName: "t_user_reference",
};
